package com.city.java.reports.mapper;

import com.city.java.reports.pojo.dto.ReportQuery;
import com.city.java.reports.pojo.entity.Reports;
import com.city.java.reports.pojo.vo.ReportVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface ReportMapper {
    /**
     * 插入新举报信息
     * @param report 举报信息对象
     * @return 影响行数
     */
    int insertReport(Reports report);

    /**
     * 根据举报ID查询举报信息
     * @param reportId 举报ID
     * @return 举报信息对象
     */
    Reports selectById(@Param("reportId") Long reportId);

    /**
     * 根据举报人ID查询举报信息列表
     * @param reporterId 举报人ID
     * @return 举报信息列表
     */
    List<Reports> selectByReporterId(@Param("reporterId") Long reporterId);

    /**
     * 根据举报类型查询举报信息列表
     * @param reportType 举报类型
     * @return 举报信息列表
     */
    List<Reports> selectByReportType(@Param("reportType") String reportType);

    /**
     * 查询所有举报信息列表
     * @return 举报信息列表
     */
    List<ReportVO> select(ReportQuery reportQuery);
    /**
     * 查询举报信息总数
     * @param reportQuery 查询条件
     * @return 总数
     */
    Long getTotalCount(ReportQuery reportQuery);


    /**
     * 根据举报ID更新举报信息
     * @param report 举报信息对象
     * @return 影响行数
     */
    int updateById(Reports report);

    /**
     * 根据举报ID删除举报信息
     * @param reportId 举报ID
     * @return 影响行数
     */
    int deleteById(@Param("reportId") Long reportId);
}
